package charts;

import charts.LineStyle;
import charts.series.dots.DefaultDotProperties;
import charts.series.Element;

// TODO - get summary of all possible struct parameter combinations

// TODO + rename typedef KeyInfoType = {
typedef KeyInfoStruct = {
	var text		: String;
	var font_size		: String;
	var colour		: String;
}

// TODO + rename typedef Style = {> KeyInfoType,
typedef StyleStruct = {> KeyInfoStruct,
	var alpha		: Float;
	var axis		: String;
	var line_style		: LineStyle;
	var onclick		: Dynamic; // TODO - type? // Probably a callback function is going to be hooked up here.
	var tip			: String;
	var values		: Array<Float>;
}

// TODO + rename typedef AreaStyle = {> Style,
typedef AreaStyleStruct = {> StyleStruct,
	var dot_size		: Int;
	var fill		: String;
	var fill_alpha		: Float;
	var loop		: Bool;
	var __dot_style		: DefaultDotProperties; // Part of a hack	
}

// TODO + rename typedef DotStyle = {> Style,
typedef DotStyleStruct = {> StyleStruct,
	var dot_size		: Int;
	var halo_size		: Int;
	var rotation		: Int;
	var sides		: Int;
	var type		: String;	
	var width		: Int;
}

// TODO + rename typedef AnimateStyle = {
typedef AnimateStruct = {
	var type		: String;
	var distance		: Int;
}

// TODO + rename typedef PieStyle = {> Style,
typedef PieStyleStruct = {> StyleStruct,
	var start_angle		: Int;
	var label_colour	: String;
	var gradient_fill	: Bool;
	var stroke		: Int;
	var colours		: Array<String>;
	var animate		: Array<AnimateStruct>;
	var no_labels		: String;
}

// TODO @ rename typedef LineStyle = {> Style, => Not necessary atm.
typedef LineStyleStruct = {> StyleStruct,
	var stepgraph		:Int;
}

// BarBase.hx
// TODO + rename typedef ClosestType = {
typedef ClosestStruct = {
	var element		: Element;
	var distance_x		: Float;
	var distance_y		: Float;
}

// BarOutline.hx
// TODO + rename typedef BarOutlineStyle = {> Style,
typedef BarOutlineStyleStruct = {> StyleStruct,
	var outline_colour	: String;
}

// BarSketch.hx
// TODO + rename typedef BarSketchStyle = {> BarOutlineStyle,
typedef BarSketchStyleStruct = {> BarOutlineStyleStruct,
	var offset		: Float;
}
